package com.xb.loan.cashier.biz.dao;


import com.xb.loan.cashier.biz.dao.bean.CashierAccount;
import com.xb.loan.util.mybatis.MyBatisRepository;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

@MyBatisRepository
public interface CashierAccountDao {

    void insertAccount(CashierAccount cashierAccount);
	/**
	 * 添加账期内未返回的数据
	 * @param cashierAccount
	 * 2015-9-15 by lottery
	 */
    void insertAccountNon(CashierAccount cashierAccount);
    
    CashierAccount selectAccountByDay(Map<String, Object> params);

    int updateAccount(CashierAccount cashierAccount);
    /**
     * params.put("payChannelType", payChannelType);
       params.put("orderType", orderType);
       params.put("day", day);
                 删除T_CASHIER_ACCOUNT 对账总表中未完成的数据
     * @param params
     * 2016年2月15日 by zhangyi
     */
    void deleteUnFinish(Map<String, Object> params);
    /**
     * params.put("payChannelType", payChannelType);
       params.put("orderType", orderType);
       params.put("day", day);
                 删除T_CASHIER_ACCOUNT_DETAIL 对账明细中未完成的数据
     * @param params
     * 2016年2月15日 by zhangyi
     */
    void deleteUnFinishDetail(Map<String, Object> params);
    /**
     * params.put("payChannelType", payChannelType);
       params.put("orderType", orderType);
       params.put("day", day);
     * T_CASHIER_ACCOUNT_CANCEL  备份T_CASHIER_ACCOUNT中的数据  
     * @param params
     * 2016年2月15日 by zhangyi
     */
    void backupFinish(Map<String, Object> params);
    /**
     * T_CASHIER_ACCOUNT_D_CANCEL 备份t_cashier_account_detail中的数据  
     * params.put("payChannelType", payChannelType);
       params.put("orderType", orderType);
       params.put("day", day);
     * @param params
     */
    void backupFinishDetail(Map<String, Object> params);
    /**
     * 删除T_CASHIER_ACCOUNT中的数据
     * params.put("payChannelType", payChannelType);
       params.put("orderType", orderType);
       params.put("day", day);
     * @param params
     */
    void deleteFinish(Map<String, Object> params);
    /**
     * 删除T_CASHIER_ACCOUNT_detail中的数据
     * params.put("payChannelType", payChannelType);
       params.put("orderType", orderType);
       params.put("day", day);
     * @param params
     */
    void deleteFinishDetail(Map<String, Object> params);
    /**
     * T_CASHIER_ACCOUNT_DETAIL  删除无账期数据
     * @param params
     */
    void deleteAccountNonDetail(Map<String, Object> params);
    
    int queryCountByAccountPeriod(Map<String, Object> params);
    
    void deleteAccountDetailByOrderId(String orderId);
    /**
	 * 查询收银台与支付渠道对账结果
	 * @param map reconType 对账类型
	 *  payOrg 支付渠道
	 *  reconResult 对账结果
	 *  startTime 开始时间
	 *  endTime 结束时间

	 */
	public List<Map<String,Object>> queryReconResult(Map<String, Object> map);
	/**
	 * 查询收银台与支付渠道对账结果   数量
	 * @param map reconType 对账类型
	 *  payOrg 支付渠道
	 *  reconResult 对账结果
	 *  startTime 开始时间
	 *  endTime 结束时间
	 * @throws ParseException
	 */
	public int queryReconResultCount(Map<String, Object> map);
	/**
	 * 通过对账结果总表ID查询对账的结果明细信息   对账失败的信息
	 * @param cashierAccountId
	 * @return
	 */
	public List<Map<String,Object>> queryReconResultErrorDetail(String cashierAccountId);
}